package org.agent.aigccore.basic.aop.spec;

import org.agent.aigccore.basic.enums.LogAction;
import org.agent.aigccore.basic.enums.LogLevel;
import org.agent.aigccore.basic.enums.LogModule;
import org.agent.aigccore.basic.enums.LogType;

/**
 * 事件规范接口：为每个业务事件提供强约束的元数据与可选行为。
 * 
 * 核心职责：
 * - 定义事件的基础元数据：模块、动作、类型、默认级别
 * - 提供可选的默认标签与参数校验能力
 * - 通过实现类约束确保事件语义的完整性与一致性
 * 
 * 实现要求：
 * - 所有方法必须返回非空值
 * - 模块/动作/类型组合应符合业务语义
 * - 默认级别应反映事件的重要性
 * 
 * 扩展能力：
 * - defaultTags()：为事件提供默认标签，便于检索与分类
 * - validate()：对方法参数进行业务级校验（可选实现）
 */
public interface EventSpec {
    LogModule module();
    LogAction action();
    LogType type();
    LogLevel defaultLevel();

    default String[] defaultTags() { return new String[0]; }

    default void validate(Object[] args) { /* no-op by default */ }
}


